// 封装信号量接口
#pragma once
#include <semaphore.h>
#define SIZE 5

class Sem
{
public:
    Sem(int _cap = SIZE)
    {
        sem_init(&_sem, 0, _cap);
    }
    ~Sem()
    {
        sem_destroy(&_sem);
    }

    void P()
    {
        // 申请信号量
        sem_wait(&_sem);
    }

    void V()
    {
        // 释放信号量
        sem_post(&_sem);
    }

private:
    sem_t _sem;
    int _cap;
};